# -------------------------- 数字类型 --------------------------
# 1. 整数（int）：用于计数、编号等精确整数场景
age = 25  # 年龄
student_count = 45  # 学生数量
binary_num = 0b1101  # 二进制（等价于13）

# 用法示例：统计及格人数
scores = [85, 59, 92, 66, 45]
pass_count = 0  # 初始化整数变量
for score in scores:
    if score >= 60:
        pass_count += 1  # 整数累加
print(f"【整数应用】及格人数：{pass_count}")  # 输出：及格人数：3


# 2. 浮点数（float）：用于需要小数精度的场景（如物理量、计算）
height = 1.75  # 身高（米）
weight = 68.5  # 体重（千克）
scientific_num = 3.2e-2  # 科学计数法（等价于0.032）

# 用法示例：计算BMI指数
bmi = weight / (height **2)  # 浮点数运算
print(f"【浮点数应用】BMI指数：{bmi:.2f}")  # 输出：BMI指数：22.34


# 3. 复数（complex）：多用于科学计算（如信号处理）
complex_num1 = 3 + 4j  # 实部3，虚部4
complex_num2 = 2 - 1.5j  # 实部2，虚部-1.5

# 用法示例：复数运算
sum_complex = complex_num1 + complex_num2  # 结果：5 + 2.5j
print(f"【复数应用】复数和：{sum_complex}，实部：{sum_complex.real}，虚部：{sum_complex.imag}")


# -------------------------- 组合数据类型 --------------------------
# 1. 列表（list）：有序、可变，用于存储动态变化的集合
fruits = ['apple', 'banana', 'orange']  # 水果列表
scores = [90, 85, 95, 78]  # 成绩列表
nested_list = [['math', 90], ['english', 85]]  # 嵌套列表

# 用法示例：管理待办事项（增删改）
todos = ['起床', '吃早餐', '上班']
todos.append('午休')  # 添加
todos[2] = '处理工作'  # 修改
todos.remove('吃早餐')  # 删除
print(f"【列表应用】今日待办：{todos}")  # 输出：['起床', '处理工作', '午休']


# 2. 元组（tuple）：有序、不可变，用于存储固定不变的集合
point = (10, 20)  # 坐标（x=10, y=20）
user_info = ('Alice', 28, 'female')  # 用户固定信息
single_tuple = (5,)  # 单元素元组（必须加逗号）

# 用法示例：表示不可变的坐标计算
def get_rectangle_corners(top_left):
    x1, y1 = top_left  # 元组解包
    return (x1 + 100, y1 + 50)  # 返回对角坐标（不可变）

top_left = (50, 30)
bottom_right = get_rectangle_corners(top_left)
print(f"【元组应用】右下角坐标：{bottom_right}")  # 输出：(150, 80)


# 3. 字典（dict）：键值对映射，用于通过键快速查询值
user = {
    'name': 'Bob',
    'age': 30,
    'hobbies': ['reading', 'running']  # 值可嵌套列表
}
config = {'host': 'localhost', 'port': 8080}  # 配置参数

# 用法示例：管理用户信息（增删改查）
print(f"【字典应用】{user['name']}的年龄：{user['age']}")  # 查
user['hobbies'].append('coding')  # 改
user['email'] = 'bob@example.com'  # 增
print(f"更新后用户信息：{user}")


# 4. 集合（set）：无序、去重，用于去重或集合运算
unique_numbers = {1, 2, 2, 3}  # 自动去重为{1,2,3}
fruits_set = set(['apple', 'banana', 'apple'])  # 去重为{'apple', 'banana'}
empty_set = set()  # 空集合

# 用法示例：查找共同好友（交集）
my_friends = {'Alice', 'Bob', 'Charlie'}
your_friends = {'Bob', 'David', 'Eve'}
common_friends = my_friends & your_friends  # 交集
all_friends = my_friends | your_friends  # 并集
print(f"【集合应用】共同好友：{common_friends}，所有好友：{all_friends}")